// 传统方式
function query(name) {
  const search = location.search.substr(1)
  // search: 'a=10&b=20&c=30'
  const reg = new RegExp(`(^|&)${name}=([^&]*)(&|$)`, 'i')
  const res = search.match(reg)
  console.log(res)
  // 数组第一个是完全匹配，第二个是匹配的第一个括号里面的内容，第3个是匹配的第2个括号里面的内容，第4个是匹配的第3个括号里面的内容，
  // ["&b=20&", "&", "20", "&"]
  if(res === null) {
    return null
  }
  return res[2]
}
console.log(query('b'))

// URLSearchParams
function query2(name) {
  const search = location.search
  const p = new URLSearchParams(search)
  return p.get(name)
}
console.log(query2('b'))

// 传统方式，分析search
function queryToObj() {
  const res = {}
  const search = location.search.substr(1) // 去掉前面的？
  search.split('&').map(paramStr => {
    const arr = paramStr.split('=')
    res[arr[0]] = arr[1]
  })
  return res
}
console.log(queryToObj()) // {a: "10", b: "20", c: "30"}

// 使用URLSearchParams
function queryToObj2(){
  const res = {}
  const pList = new URLSearchParams(location.search)
  pList.forEach((val, key) => {
    res[key] = val
  })
  return res
}
console.log(queryToObj2()) // {a: "10", b: "20", c: "30"}
